// ================================================================================
// 告警日志服务接口定义
// ================================================================================

package service

import (
	"context"
	"devops-super/api"
	"devops-super/api/alerts/v1"
	"devops-super/internal/model/entity"
	"devops-super/internal/model/mymodel"
)

// IAlertLog 告警日志服务接口
type IAlertLog interface {
	// Add 添加告警日志
	Add(ctx context.Context, in *entity.AlertLogDemo) (err error)

	// Upt 更新告警日志
	Upt(ctx context.Context, in *entity.AlertLogDemo) (err error)

	// GetPageLst 分页获取告警日志列表
	GetPageLst(ctx context.Context, req *v1.AlertLogGetPageLstReq) (out *api.PageLstRes[*mymodel.AlertLogResponse], err error)

	// UptStatus 更新告警日志状态
	UptStatus(ctx context.Context, id int64, status int) (err error)

	// Del 删除告警日志
	Del(ctx context.Context, id int64) (err error)

	// GetOne 获取单条告警日志
	GetOne(ctx context.Context, id int64) (out *entity.AlertLogDemo, err error)

	// GetOptions 获取告警日志选项
	GetOptions(ctx context.Context, in *v1.AlertLogGetOptionsReq) (out *v1.AlertLogGetOptionsRes, err error)

	// HandleLog 处理告警日志
	HandleLog(ctx context.Context, id int64, handleStatus int, handRemark string) (err error)

	// BatchDel 批量删除告警日志
	BatchDel(ctx context.Context, ids []int64) (err error)

	// BatchHandle 批量处理告警日志
	BatchHandle(ctx context.Context, ids []int64, handleStatus int, handRemark string) (err error)
}

var (
	localAlertLog IAlertLog
)

// AlertLog 获取告警日志服务实例
func AlertLog() IAlertLog {
	if localAlertLog == nil {
		panic("implement not found for interface IAlertLog, forgot register?")
	}
	return localAlertLog
}

// RegisterAlertLog 注册告警日志服务实现
func RegisterAlertLog(i IAlertLog) {
	localAlertLog = i
}
